home *** CD-ROM | disk | FTP | other *** search
/ Windows Game Programming for Dummies (2nd Edition) / WinGamProgFD.iso / pc / DirectX SDK / DXSDK / samples / Multimedia / Common / include / d3dfile.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-10-31  |  4.2 KB  |  131 lines

  1. //-----------------------------------------------------------------------------
  2. // File: D3DFile.h
  3. //
  4. // Desc: Support code for loading DirectX .X files.
  5. //
  6. // Copyright (c) 1997-2001 Microsoft Corporation. All rights reserved.
  7. //-----------------------------------------------------------------------------
  8. #ifndef D3DFILE_H
  9. #define D3DFILE_H
  10. #include <tchar.h>
  11. #include <d3d8.h>
  12. #include <d3dx8.h>
  13.  
  14.  
  15.  
  16.  
  17.  
  18. //-----------------------------------------------------------------------------
  19. // Name: class CD3DMesh
  20. // Desc: Class for loading and rendering file-based meshes
  21. //-----------------------------------------------------------------------------
  22. class CD3DMesh
  23. {
  24. public:
  25.     TCHAR               m_strName[512];
  26.  
  27.     LPD3DXMESH          m_pSysMemMesh;    // SysMem mesh, lives through resize
  28.     LPD3DXMESH          m_pLocalMesh;     // Local mesh, rebuilt on resize
  29.     
  30.     DWORD               m_dwNumMaterials; // Materials for the mesh
  31.     D3DMATERIAL8*       m_pMaterials;
  32.     LPDIRECT3DTEXTURE8* m_pTextures;
  33.     BOOL                m_bUseMaterials;
  34.  
  35. public:
  36.     // Rendering
  37.     HRESULT Render( LPDIRECT3DDEVICE8 pd3dDevice, 
  38.                     BOOL bDrawOpaqueSubsets = TRUE,
  39.                     BOOL bDrawAlphaSubsets = TRUE );
  40.  
  41.     // Mesh access
  42.     LPD3DXMESH GetSysMemMesh() { return m_pSysMemMesh; }
  43.     LPD3DXMESH GetLocalMesh()  { return m_pLocalMesh; }
  44.  
  45.     // Rendering options
  46.     VOID    UseMeshMaterials( BOOL bFlag ) { m_bUseMaterials = bFlag; }
  47.     HRESULT SetFVF( LPDIRECT3DDEVICE8 pd3dDevice, DWORD dwFVF );
  48.  
  49.     // Initializing
  50.     HRESULT RestoreDeviceObjects( LPDIRECT3DDEVICE8 pd3dDevice );
  51.     HRESULT InvalidateDeviceObjects();
  52.  
  53.     // Creation/destruction
  54.     HRESULT Create( LPDIRECT3DDEVICE8 pd3dDevice, TCHAR* strFilename );
  55.     HRESULT Create( LPDIRECT3DDEVICE8 pd3dDevice, LPDIRECTXFILEDATA pFileData );
  56.     HRESULT Destroy();
  57.  
  58.     CD3DMesh( TCHAR* strName = _T("CD3DFile_Mesh") );
  59.     virtual ~CD3DMesh();
  60. };
  61.  
  62.  
  63.  
  64.  
  65. //-----------------------------------------------------------------------------
  66. // Name: class CD3DFrame
  67. // Desc: Class for loading and rendering file-based meshes
  68. //-----------------------------------------------------------------------------
  69. class CD3DFrame
  70. {
  71. public:
  72.     TCHAR      m_strName[512];
  73.     D3DXMATRIX m_mat;
  74.     CD3DMesh*  m_pMesh;
  75.     TCHAR      m_strMeshName[512];
  76.  
  77.     CD3DFrame* m_pNext;
  78.     CD3DFrame* m_pChild;
  79.  
  80. public:
  81.     // Matrix access
  82.     VOID        SetMatrix( D3DXMATRIX* pmat ) { m_mat = *pmat; }
  83.     D3DXMATRIX* GetMatrix()                   { return &m_mat; }
  84.  
  85.     CD3DMesh*   FindMesh( TCHAR* strMeshName );
  86.     CD3DFrame*  FindFrame( TCHAR* strFrameName );
  87.     BOOL        EnumMeshes( BOOL (*EnumMeshCB)(CD3DMesh*,VOID*), 
  88.                             VOID* pContext );
  89.  
  90.     HRESULT Destroy();
  91.     HRESULT RestoreDeviceObjects( LPDIRECT3DDEVICE8 pd3dDevice );
  92.     HRESULT InvalidateDeviceObjects();
  93.     HRESULT Render( LPDIRECT3DDEVICE8 pd3dDevice, 
  94.                     BOOL bDrawOpaqueSubsets = TRUE,
  95.                     BOOL bDrawAlphaSubsets = TRUE,
  96.                     D3DXMATRIX* pmatWorldMartix = NULL);
  97.     
  98.     CD3DFrame( TCHAR* strName = _T("CD3DFile_Frame") );
  99.     virtual ~CD3DFrame();
  100. };
  101.  
  102.  
  103.  
  104.  
  105. //-----------------------------------------------------------------------------
  106. // Name: class CD3DFile
  107. // Desc: Class for loading and rendering file-based meshes
  108. //-----------------------------------------------------------------------------
  109. class CD3DFile : public CD3DFrame
  110. {
  111.     HRESULT LoadMesh( LPDIRECT3DDEVICE8 pd3dDevice, LPDIRECTXFILEDATA pFileData, 
  112.                       CD3DFrame* pParentFrame );
  113.     HRESULT LoadFrame( LPDIRECT3DDEVICE8 pd3dDevice, LPDIRECTXFILEDATA pFileData, 
  114.                        CD3DFrame* pParentFrame );
  115. public:
  116.     HRESULT Create( LPDIRECT3DDEVICE8 pd3dDevice, TCHAR* strFilename );
  117.     HRESULT CreateFromResource( LPDIRECT3DDEVICE8 pd3dDevice, TCHAR* strResource, TCHAR* strType );
  118.     // For pure devices, specify the world transform. If the world transform is not
  119.     // specified on pure devices, this function will fail.
  120.     HRESULT Render( LPDIRECT3DDEVICE8 pd3dDevice, D3DXMATRIX* pmatWorldMatrix = NULL );
  121.  
  122.     CD3DFile() : CD3DFrame( _T("CD3DFile_Root") ) {}
  123. };
  124.  
  125.  
  126.  
  127. #endif
  128.  
  129.  
  130.  
  131.